svg 元素可以触发 svg 元素的点击事件吗? 您所在的位置:网站首页 mouse click event js svg 元素可以触发 svg 元素的点击事件吗?

svg 元素可以触发 svg 元素的点击事件吗?

2023-03-15 13:46| 来源: 网络整理| 查看: 265

新手问题在这里。

我想知道是否有可能触发其下方元素(路径,圆圈等)的“点击”事件,如果它们覆盖了鼠标坐标?最好在打字稿中通过使用d3.js库。

例如,考虑有两个圆圈(一个小圆圈在 z 位置上比一个大圆圈大),并且在单击时都显示一条消息。我希望如果我在小圆圈内单击,则会出现其消息,然后也会显示较大圆圈的消息。

以下是我的例子[编辑:D3的更改版本]的HTML代码:

  circle { fill: lightgreen; stroke: #000; }

以下是相关的脚本:

var svg = d3.select("body").append("svg")

    .style("float", "left")

    .attr("width", 480)

    .attr("height", 480)

    .attr('pointer-events', 'all')

    .on("click", log("SVG"));

svg.append("circle")

    .attr('pointer-events', 'all')

    .attr("cx", 240)

    .attr("cy", 240)

    .attr("r", 200)

    .on("click", log("OUTER"));

svg.append("circle")

    .attr('pointer-event', 'all')

    .attr("cx", 240)

    .attr("cy", 240)

    .attr("r", 100)

    .on("click", log("INNER"));

var div = d3.select("body").append("div")

    .style("float", "left");

function log(message) {

  return function() {

    div.append("p")

        .text(message)

        .style("background", "#ff0")

      .transition()

        .duration(2500)

        .style("opacity", 1e-6)

        .remove();

  };

}

通过此代码,单击大圆圈将显示外部和SVG消息。单击小圆圈将显示内部和SVG消息,但我希望具有内部,外部和SVG序列。

[编辑:纠正了“传播”一词的误用]

我将元素的“指针事件”属性设置为“all”。我知道这使它们“非传递”,但我希望能够触发它们的事件,并触发它们下面的元素的事件。

或者,是否有任何好的方法可以获得覆盖给定坐标[X,Y]的svg元素列表(可以通过获得),以便可以手动触发它们各自的点击事件?d3.mouse

感谢您的帮助。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有